#include<iostream>
using namespace std;

class A
{
public:
	A(int x) 
		:a(x)
	{ cout << "A::A()" << endl; }
	~A() { cout << "A::~A()" << endl; }
	int a;
};
class B : public A
{
public:
	B(int x, int y) 
		:A(x)
		,b(y)
	{ cout << "B::B()" << endl; }
	~B() { cout << "B::~B()" << endl; }
	int b;
};
int main()
{
	B b(1, 2);
	return 0;
}

//class A
//{
//public:
//	void f() { cout << "A::f()" << endl; }
//	int a;
//};
//class B : public A
//{
//public:
//	void f(int a) { cout << "B::f()" << endl; }
//	int a;
//};
//int main()
//{
//	B b;
//	b.f();
//	return 0;
//}



//template<class T>
//class A
//{
//
//};
//
//class B : public A<int>
//{
//
//};

//template<class T>
//class A
//{
//
//};
//template<class T>
//class B : public A<T>
//{
//
//};

//
//int main()
//{
//	return 0;
//}